import { h, defineComponent, withDirectives, resolveDirective } from "vue";

/** 封装@vueuse/motion动画库中的自定义指令v-motion */
export default defineComponent({
	name: "Motion",
	props: {
		delay: {
			type: Number,
			default: 50
		}
	},
	render() {
		const { delay } = this;
		const motion = resolveDirective("motion");
		return withDirectives(
			h(
				"div",
				{},
				{
					default: () => [this.$slots.default()]
				}
			),
			[
				[
					motion,
					{
						initial: { opacity: 0, y: 100 },
						enter: {
							opacity: 1,
							y: 0,
							transition: {
								delay
							}
						}
					}
				]
			]
		);
	}
});
